def generate(numRows):
    if numRows == 0:
        return []
    
    # 初始化动态规划表
    dp = [[1]]  # 第一行
    
    for i in range(1, numRows):
        # 新行的第一个元素总是1
        new_row = [1]
        
        # 填充中间元素
        for j in range(1, i):
            new_row.append(dp[i-1][j-1] + dp[i-1][j])
        
        # 新行的最后一个元素总是1
        new_row.append(1)
        
        dp.append(new_row)
    
    return dp